თავი 1. Access  2007-ის ობიექტური მოდელი

1.2. ფორმის მოვლენები  
ფორმის მოვლენებია: 
 Activate, AfterDelConfirm,  AfterInsert,  AfterUpdate, Apply Filter, BeforeDelConfirm,  BeforeInsert,  BeforeUpdate,  Click,  Close,  Current,  DbClick, Deactivate,  Delete, Dirty, Error, Filter,  Got Focus, Key Down, Key Press, Key Up, Load, Lost Focus, Mouse Down, Mouse Move, Mouse Up, Open, Resize,  Timer, Undo,  Unload.
წარმოიქმნება მოვლენა:
  • Activate (გააქტიურება) – ფორმის მიერ ფოკუსის მიღებისას. ეს მოვლენა წარმოიქნება: ფორმის გაღების დროს, მომხმარებლის მიერ ფორმაზე ან ფორმაზე არსებულ მართვის ელემენტზე თაგუნას დაწკაპუნებისას, ხოლო პროგრამულად – მეთოდის SetFocus გამოყენებისას;
მაგალითი – ფორმის მოვლენის Activate გამოყენება
       პროგრამა ჩაწერილია ფორმის Fstudenti-ის მოდულში. Fstudenti_gacdenili ფორმის  Fstudenti-ის დამოკიდებული ფორმაა. მიმართვა ხორციელდება ყოველთვის დამოკიდებულ ფორმაზე  Fstudenti_gacdenili ფორმის Fstudenti გააქტიურებისას. ეს პროგრამული კოდი უზრუნველყოფს მთავარ ფორმაში განხორციელებული ცვლილებების უპირობო ასახვას დამოკიდებულ ფორმაში 
Private Sub Form_Activate()
Me.Fstudenti_gacdenili.Requery
End Sub
  • AfterDelConfirm (ჩანაწერის ამოშლის შემდეგ) – ჩანაწერის ამოშლის შესახებ შეტყობინების  დიალოგური ფანჯრის გაღების შემდეგ;
  • AfterInsert (ჩანაწერის დამატების შემდეგ) – ფორმაში მონაცემების შეტანის, ცხრილში ჩანაწერის დამატების შესახებ ბრძანების მიცემის, ჩანაწერის ცხრილში დამატებისა და დამახსოვრების შემდეგ;  
  • AfterUpdate – წარმოიქმნება  ჩანაწერში მონაცემების მნიშვნელობის ცვლილების შემდეგ. მოვლენა შეიძლება გამოყენებულ იქნეს ComboBox-ში განმეორებით მიმართვის გასაკეთებლად;
მაგალითი –ფორმის მოვლენის AfterUpdate   გამოყენება
პროგრამით ხორციელდება VComboBox-ზე მიმართვა ჩანაწერში ცვლილებების ჩატარების შემდეგ
Private Sub Form_AfterUpdate()
Me.VComboBox.Requery
End Sub
  • Apply Filter (ფილტრის გამოყენება) – ფორმის კონტექსტურ მენიუში ბრძანების Apply Filter/Sort ან Filter By Selection ან Remove Filter/Sort ან გაფართოებული ფილტრის ფანჯრის Filter/Sort დახურვისას;
  • BeforeDelConfirm (ჩანაწერის ამოშლამდე) – ჩანაწერის ამოშლის შესახებ შეტყობინების დიალოგური ფანჯრის გაღებამდე. ამ დროს შესაძლებელია ჩანაწერის ამოშლის ბრძანების გაუქმება;
  • BeforeInsert (ჩანაწერის დამატებამდე) – ახალ ჩანაწერში, ცხრილში ჩანაწერის შექმნამდე, TextBox-ში ან ComboBox-ში  პირველი სიმბოლოს მონაცემთა ბაზაში  ჩაწერისას. მოვლენა წარმოიქმნება მოვლენა Change-მდე;
მაგალითი–ფორმის მოვლენის  BeforeInsert გამოყენება
პროგრამა ჩაწერილია ფორმის Fstudenti_gacdenili-ს მოდულში. მოვლენის წარმოიქნისას აქტივიზირდება ფორმა Fstudenti_gacdenili ფორმის  Fstudenti-ის მიერ. ფორმის Fstudenti_gacdenili ველში Vnomeri ფორმიდან Fstudenti იწერება ველში Vnomeri არსებული სტუდენტის ნომერი
Private Sub Form_BeforeInsert(Cancel As Integer)
On Error GoTo  t1
Me.Vnomeri = Forms.Fstudenti.Vnomeri
t2:
Exit Sub
t1:MsgBox Err.Description
Resume t2 
End Sub
  • BeforeUpdate (ჩანაწერში ცვლილების შეტანამდე) – ფორმაში მონაცემების ცვლილების, სისტემის მიერ ცხრილში ჩანაწერის ცვლილების შესახებ ბრძანების მიცემისა და  ცხრილში ჩანაწერში ცვლილების ჩატარებამდე ე.ი. მაშინ, როცა მომხმარებელი ცდილობს გადავიდეს ახალ ჩანაწერზე. ეს მოვლენა წარმოიქმნება მაშინაც, როცა ჩანაწერი დამოკიდებულ ფორმაშია. მოვლენა BeforeUpdate წარმოიქმნება  აგრეთვე ბრძანების Record≫Save Record მიცემის შემდეგ. მოვლენის გამოყენების მაგალითია ველებში მნიშვნელობის არსებობის აუცილებლობის შემოწმება;
მაგალითი – ფორმის მოვლენის BeforeUpdate     გამოყენება
Private Sub Form_BeforeUpdate(Cancel As Integer)
' მოწმდება ველში Vnomeri სტუდენტის ნომრის არსებობა
If IsNull(Me.Vnomeri)  Then
MsgBox “სტუდენტის ნუმრის ჩაწერა “ & vbCrLf & _
vbCritical, _
“აუცილებელია”
Me.Vnomeri.SetFocus
Cancel = True
End If
End Sub
  • Click – ფორმის ცარიელ ადგილზე თაგუნას ღილაკზე დაწკაპუნებისას;
  • Close (დახურვა) – ფორმის დახურვისას;
  • Current (მიმდინარე ჩანაწერი) – ფორმაში ერთი ჩანაწერიდან მეორე ჩანაწერზე გადასვლისას;
მაგალითი–ფორმის მოვლენის Current გამოყენება
Private Sub Form_Current()
‘ახალ ჩანაწერზე გადასვლისას ფოკუსი თავსდება TextBox-ში სახელით Vgvari
If Me.NewRecord Then 'თუ ახალი ჩანაწერია, მაშინ ფოკუსი მოთავსდეს ველში სახელით Vgvari
Me.Vgvari.SetFocus
End If
End Sub
  • DbClick – ფორმის ცარიელ ადგილზე თაგუნას ღილაკზე ორჯერ ზედიზედ დაწკაპუნებისას;
  • Deactivate (აქტიურობის დაკარგვა) – ფორმის, ან ფორმაზე არსებული მართვის ელემენტის მიერ ფოკუსის დაკარგვისას, მაშინ როდესაც აქტიური ხდება ცხრილი, შეკითხვა, სხვა ფორმა, მაკროსი, მოდული, მონაცემთა ბაზის ფანჯარა. ეს მოვლენა არ წარმოქმნება, მაშინ როცა აქტიური ხდება: დიალოგური ფორმა, მცურავი ფორმა ან სხვა ნებისმიერი დანართი (Excel, Word  და ა.შ.);
  • Delete (ჩანაწერის ამოშლა) – ჩანაწერის ამოშლის   ბრძანების მიცემის, ფაქტობრივად ცხრილიდან  ჩანაწერის ამოშლამდე;
  • Dirty – წარმოიქმნება ფორმის შინაარსიის ცვლილებისას, მართვის ელემენტის ComboBox-ის წყაროს მნიშვნელობისა (ახალი ჩანაწერის დამატება, ამოშლა, ცვლილება) და პროგრამულად თვისების Text მნიშვნელობის ცვლილებისას;
  • Error (შეცდომა) – მომხმარებლის ფორმასთან შეცდომით მუშაობისას გენერირდება მხოლოდ სისტემური შეცდომები. მოვლენა არ წარმოიქმნება, თუ შეცდომის წყაროა VB-ის პროგრამული კოდი. იგი  შეიძლება გამოყენებულ იქნეს სისტემის მიერ შეცდომის შესახებ სტანდარტული შეტყობინებების ბლოკირებისათვის;
  • Filter (ფილტრაცია) – მომხმარებლის მიერ ფორმის ფილტრის შერჩევისას;
  • Got Focus (ფოკუსის მიღება) – ფორმის მიერ ფოკუსის მიღებისას;
  • KeyDown (კლავიში დაჭერილ მდგომარეობაში) – ფორმაზე მართვის ელემენტის არარსებობის ან მაშინ როდესაც ფორმის თვისების KeyPreview (კლავიშზე დაჭერის მომენტის ფიქსირება) მნიშვნელობაა Yes. თუ   KeyPreview=Yes, მაშინ ფორმის მიერ მოწმდება კლავიატურის ყველა მოვლენა და გენერირდება ფოკუსის მქონე მართვის ელემენტისთვის. კლავიშის დაჭერილ მდგომარეობაში მოვლენა Key Down მრავალჯერ გენერირდება. კლავიშზე დაჭერის მოვლენის გაუქმება შეიძლება, მოვლენის პარამეტრსთვის KeyCode  მნიშვნელობის Zero მინიჭებით;
  • KeyPress (კლავიშის დაჭერა) – წარმოიქმნება კლავიშის (კლავიშების ერთობლიობის) დაჭერისა ან აშვებისას. მოვლენა წარმოიქმნება ფორმაზე მართვის არარსებობისას ან მაშინ როდესაც ფორმის თვისების KeyPreview (კლავიშზე დაჭერის მომენტის ფიქსირება) მნიშვნელობაა Yes. კლავიშზე დაჭერის მოვლენის გაუქმება შეიძლება, მოვლენის პარამეტრსთვის KeyCode  მნიშვნელობის Zero მინიჭებით;
  • KeyUp (კლავიში ზედა მდგომარეობაში) – ფორმაზე მართვის არარსებობისას ან მაშინ როდესაც ფორმის თვისების KeyPreview (კლავიშზე დაჭერის მომენტის ფიქსირება) მნიშვნელობაა Yes. თუ   KeyPreview=Yes, მაშინ ფორმის მიერ მოწმდება კლავიატურის ყველა მოვლენა და გენერირდება ფოკუსის მქონე მართვის ელემენტისთვის. მოვლენა Key Up  წამოიქმნება მხოლოდ ერთხელ;
  •  Load (ჩატვირთვა) – ფორმის მახსოვრობაში ჩატვი-რთვისას;
  •  Lost Focus (ფოკუსის დაკარგვა) – ფორმის მიერ ფოკუსის დაკარგვისას; 
  •  Mouse Down – ფორმის ცარიელ ადგილზე თაგუნას ღილაკზე დაჭერისას მოვლენა Click-ის დადგომამდე;
  •  Mouse Move – ფორმის საზღვრებში თაგუნას მაჩვენებლის გადაადგილებისას;
  •  Open (გაღება) – ფორმის გაღებისას;
  •  Resize (ზომების ცვლილება) – ფორმის პირველად დაყენებისა და შემდეგ ფორმის ზომების ცვლილებისას;
  •  Timer – მოვლენა Timer გამოიყენება ფორმის თვისება TimeInterval-სთან ერთად. თვისების TimeInterval მნიშვნელობაა  0-დან 2 147 483 647 მილიწამი. მაგალითად თუ TimeInterval=0, მაშინ მოვლენა Timer არ წარმოიქმნება, ხოლო თუ TimeInterval=5000, მაშინ მოვლენა Timer წარმოიქმნება 5 წამში ერთხელ;
  •  Undo – ღილაკზე Undo დაწკაპუნებისას ან კლავიშზე Esc დაჭერისას ან პროგრამულად ჩანაწერში ჩატარებული ცვლილების გაუქმების წინ;
  •  Unload (ფორმის გადმოტვირთვა) – ფორმის დახურვის და მახსოვრობიდან ამოშლის შემდეგ; 
ფორმის მოვლენების თანმიმდევრობა
1.        მოვლენების თანმიმდევრობა ფორმის გაღებისას
Open>>LoadResize>>Activate>>Current
2.        მოვლენების თანმიმდევრობა ფორმის დახურვისას
Exit>>LostFocus>>UnLoad>>Deactivate>>Close 
3.        მოვლენების თანმიმდევრობა ფორმის ზომების ცვლილებისას
4.        ზომების შემცირებისას Resize>>Activate 
5.       ზომების აღდგენისას Activate>>resize
6.        მოვლენების თანმიმდევრობა  ერთი ფორმიდან მეორე ფორმაზე ფოკუსის გადატანისას 
პირველ ფორმაში წარმოიქმნება მოვლენა Deactivate, მეორეში კი - Activate. მოვლენა Deactivate არ წარმოიქმნება დიალოგური ფანჯრისათვის, მცურავი ფორმისათვის ან სხვა დანართზე (Excel, Word, PowerPoint და სხვა) გადასვლისას.
7.        მოვლენების თანმიმდევრობა  კლავიშზე დაჭერისას 
       KeyDown>>KeyPress>>KeyUp
თუ ბლოკირებულია მოვლენა KeyDown და მისი პარამეტრი KeyCode=Zero, მაშინ მოვლენები KeyPress, KeyUp არ წარმოიქმნება.
8.        მოვლენების თანმიმდევრობა  თაგუნას კლავიშზე ზემოქმედებისას 
MouseDown>>MouseUp>>Click
ფორმის მოვლენების გაგრძელება - მაგალითები